O código abaixo realiza a leitura de múltiplos nomes, salarios e qtde de dependentes de uma determinada cidade.
Faça ajustes no código para ao término da impressão dos dados dos habitantes, seja impresso na tela
- A média dos salarios dos habitantes.
Exemplo:
Média dos salários: R$ 2780,22
- A média de dependentes.
Exemplo:
Média de dependentes: 2,7 dependentes por habitante.
- O nome do habitante que tem a menor quantidade de dependentes. Além do nome imprima também a quantidade de dependentes deste habitante. Não se preocupe se existir empate na quantidade mínima de habitantes.
Exemplo:
Habitante com a menor quantidade de dependentes: Carlos
Quantidade de dependentes do Carlos: 1
- O nome do habitante que tem o maior salário. Além do nome imprima também o valor do salário deste habitante.
Exemplo:
Nome do habitante com maior salário: José
Valor do salário do José: R$ 4200,58
- Imprima o nome e a quantidade de dependentes dos habitantes que possuem o número de dependentes menor que a média geral de dependentes por habitante.
Exemplo:
Nome Qtde de Dependentes
Mário 1
Maria 1
Marcelo 2
Roberto 0
- Este código possui um problema, foi estipulado que serão 20 espaços para imprimir a coluna de nome. Se um usuário tiver mais de 20 caracteres no nome a formatação ficará incorreta. Você deve fazer uma correção na impressão do nome da seguinte forma: Se o usuário tiver mais de 19 caracteres você deverá retirar três caracteres no fim do nome e terminar com ... no nome.
Exemplo:
Rogério de Freitas Ribeiro deve ficar
Rogério de Freit...
import java.util.Scanner;
public class App {
public static void main(String[] args) {
Scanner teclado;
teclado = new Scanner(System.in);
//declaramos e já inicializamos as
//variaveis com 400 posicoes vazias
String nomes[] = new String[400];
int numeroDeps[] = new int[400];
float salarios[] = new float[400];
//variavel utilizada para armazenar a ultima
//posicao preenchida do vetor
int ultimaPosicaoGravada = 0 ;
//variavel para guardar a resposta do
//usuario se ele deseja digitar os dados
//de um novo habitante
char resposta;
//leitura dos habitantes e gravacao na memoria (vetores)
for (int posicaoVetor = 0; posicaoVetor < 400; posicaoVetor++) {
nomes = lerNome(teclado, nomes, posicaoVetor);
salarios = lerSalario(teclado, salarios, posicaoVetor);
numeroDeps = lerDependentes(teclado, numeroDeps, posicaoVetor);
System.out.print("\nDeseja entrar com dados do próximo habitante [s/n]: ");
resposta = teclado.nextLine().toLowerCase().charAt(0);
if (resposta == 'n'){
ultimaPosicaoGravada = posicaoVetor;
break;
}
}
imprimirDados(nomes, salarios, numeroDeps, ultimaPosicaoGravada);
teclado.close();
}
static void imprimirDados(String nomes[], float salarios[], int numeroDeps[], int ultimaPosicaoGravada){
//acessando os dados para imprimir na tela
int qtdeEspacos;
System.out.println("\nNome Salario QtdeDependentes");
System.out.println("----------------------------------------------------------");
for (int posicaoVetor = 0; posicaoVetor <= ultimaPosicaoGravada; posicaoVetor++) {
//imprime o nome do habitante
System.out.print(nomes[posicaoVetor]);
//calcula quantos espacos sao necessarios para alinhar
//o valor do salario na posicao da coluna salario
qtdeEspacos = (20 - nomes[posicaoVetor].length());
//imprime a quantidade de espacos para alinhar os salarios
System.out.print(geraEspacos(qtdeEspacos));
//imprime o salario
System.out.print("R$ " + salarios[posicaoVetor]);
//calcula quantos espacos sao necessarios para alinhar
//a quantidade de dependentes
qtdeEspacos = (20 - Float.toString(salarios[posicaoVetor]).length());
//imprime os espacos
System.out.print(geraEspacos(qtdeEspacos));
//imprime a quantidade de dependentes
System.out.println(numeroDeps[posicaoVetor]);
}
}
static String geraEspacos(int qtde){
String espacos = "";
for (int i = 0; i < qtde; i++) {
espacos += " ";
}
return espacos;
}
static String[] lerNome(Scanner teclado, String nomes[], int posicaoLivre){
System.out.print("Digite o nome do habitante: ");
nomes[posicaoLivre] = teclado.nextLine();
return nomes;
}
static float[] lerSalario(Scanner teclado, float salarios[], int posicaoLivre){
System.out.print("Digite o salario R$: ");
salarios[posicaoLivre] = teclado.nextFloat();
//resolve o problema da limpeza do buffer
teclado.nextLine();
return salarios;
}
static int[] lerDependentes(Scanner teclado, int numeroDeps[], int posicaoLivre){
System.out.print("Digite a quantidade de dependentes: ");
numeroDeps[posicaoLivre] = teclado.nextInt();
//resolve o problema da limpeza do buffer
teclado.nextLine();
return numeroDeps;
}
}